The proposed technique was implemented in \textit{Pluto}, 
a source-to-source polyhedral compiler. 
\emph{Pluto} is composed of many tools (Figure \ref{fig:pluto_components}):
   \begin{itemize}
      \item Clan : syntactic analysis
      \item Candl : dependence analysis
      \item Pluto : constraint construction
      \item Cloog : code generation
   \end{itemize}

\begin{figure}[h!tb]
 \centering
 \includegraphics[bb=0 0 618 918,keepaspectratio=true,scale=0.40]{./figures/pluto/architecture_simple_pluto.pdf}
 % architecture_simple_pluto.eps: 0x0 pixel, 300dpi, 0.00x0.00 cm, bb=0 0 618 918
 \caption{\emph{Pluto} components}
\label{fig:pluto_components}
\end{figure}

It works as follows :
\begin{enumerate}
\item Extracts polyhedral information (iteration domains, scheduling functions, read/write access functions ...).
\item Performs data dependence analysis.
\item Creates system of constraints and solve it in order to find the best code transformations. 
  The optimization seeks to transform the code such that:
      \begin{enumerate}
	\item Data locality is maximized, through loop fusion.
	\item Outer loops are parallel, if possible.
	\item The loop nest is transformed to enable
	parallelism and tiling.
      \end{enumerate}
\item Generate code using Cloog \cite{cedric_improving_2004}.
\end{enumerate}


